[FIX] Capture-Inversion False Positives Block open_kitchen on All-Truthy Configs#4188
Merged
Trecek merged 5 commits intoJul 5, 2026
Conversation
- Fix non-dominating producer test: split routing targets so conditional edge facts don't mask the dominance check through set-based edge collapse - Update schema version allowlist: tools_kitchen.py lines shifted +5 - Fix eval recipes: remove dead captures, add L3 sentinel to stop messages - Fix list_recipes test: explicitly set _ctx=None to prevent xdist state leak Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ow compliant) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…erage - tests/recipe/test_bundled_recipes_all_truthy.py: add _default_overrides() helper and test_bundled_recipe_validates_with_default_ingredients to guard the complementary non-truthy/pruned configuration path - tests/fleet/test_fleet_error_count_surfacing.py: new file covering the fleet-path combined-overflow computation in _run_dispatch (5+5 → "+4 more errors", exactly 6 → no indicator) - tests/fleet/AGENTS.md + tests/recipe/AGENTS.md: document new/updated files Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
00f91af to
7c68f9b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The
capture-inversion-detectionrule produces false positives for context variables that have an unconditional capture-producer dominating every path to the reader. The rule checks whether the variable appears in the conditional fact domain but never verifies whether an unconditional producer is a strict dominator of the reader — a dominance check its sibling ruleevent-scope-requires-upstream-captureapproximates (via backward reachability, which is sufficient for that rule's single-producer-near-entry pattern but insufficient for the general case here). These false positives were masked for weeks byfilter_pruning_false_positives, which has two structural weaknesses: (1) its arming condition disarms on all-truthy configs (the healthiest scenario), and (2) the pre-prune baseline is structurally blind for this rule because bypass edges dilute the BFS fact intersection. A secondary defect — silent[:3]truncation of validation errors — hid 4 of 7 findings from the operator. The immunity plan addresses all four root causes (R1–R4) with architectural changes that make the bug class impossible and instantly surfaced.Implementation Plan
Plan file:
/home/talon/projects/autoskillit-runs/remediation-20260705-091550-099403/.autoskillit/temp/rectify/rectify_capture_inversion_false_positives_2026-07-05_091550.mdCloses #4184
🤖 Generated with Claude Code via AutoSkillit
Token Usage Summary
* Step used a non-Anthropic provider; caching behavior may differ.
Token Efficiency
Model Usage Breakdown